package com.example.yurpceasy.serializer;

import com.example.yurpceasy.spi.SpiLoader;

public class SerializerFactory {


//    /**
//     * 序列化器映射（用于实现单例）
//     */
//    private static final Map<String, Serializer> KEY_SERIALIZER_MAP = new HashMap<>() {{
//        put(SerializerKeys.JDK, new JdkSerializer());
//        put(SerializerKeys.JSON, new JsonSerializer());
//        put(SerializerKeys.KRYO, new KryoSerializer());
//        put(SerializerKeys.HESSIAN, new HessianSerializer());
//    }};

   // 去加载实现了这个接口的所有类
   static {
        SpiLoader.load(Serializer.class);
    }

    /**
     * 默认序列化器
     */
    private static final Serializer defaultSerializer = new JdkSerializer();

    /**
     * 获取指定序列化器，如若没有则使用默认序列化器
     *
     * @param key
     * @return
     */
    public static Serializer getInstance(String key) {
        return SpiLoader.getInstance(Serializer.class,key);
    }
}
